package com.zero.singleton.lazy;

/**
 * 双重if说明
 * 1.内层的if创建实例加锁保证线程安全,避免创建多个实例
 * 2.外层的if用来提升性能,已经存在实例的情况下可直接返回,无需等待锁
 */
public class Archer {
    //只做声明
    private static volatile Archer instance = null;
    //私有化构造方法
    private Archer(){
        System.out.println("Archer实例被创建");
    }
    //对外提供获得实例的方法
    public static Archer getInstance(){
        if (instance == null){
            synchronized (Archer.class){
                if (instance == null){
                    instance = new Archer();
                }
            }
        }
        return instance;
    }
}
